package savet.gui.controllers;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.openswing.swing.message.receive.java.Response;
import org.openswing.swing.message.receive.java.VOListResponse;
import org.openswing.swing.table.client.GridController;
import org.openswing.swing.table.java.GridDataLocator;
import savet.entidades.Trabalhador;
import savet.repositorio.TrabalhadorJpaController;

/**
 *
 * @author Adisson
 */
public class TabelaPadraoController extends GridController implements GridDataLocator {

    private List<Trabalhador> listaTrabalhadores;
    private TrabalhadorJpaController controller = new TrabalhadorJpaController();

    public Response loadData(int action, int startIndex, Map filteredColumns, ArrayList currentSortedColumns, ArrayList currentSortedVersusColumns, Class valueObjectType, Map otherGridParams) {
//        if (controller.getTrabalhadorCount() > 0) {
//            listaTrabalhadores = controller.findTrabalhadorEntities();
//        }
        VOListResponse listResponse = new VOListResponse();
        listResponse.setRows(listaTrabalhadores);
        return listResponse;
    }

    @Override
    public Response insertRecords(int[] rowNumbers, ArrayList newValueObjects) throws Exception {
        VOListResponse listResponse = new VOListResponse();
        for (Object object : newValueObjects) {
            listaTrabalhadores.add((Trabalhador) object);
            controller.create((Trabalhador) object);
        }
        listResponse.setRows(listaTrabalhadores);
        return listResponse;
    }

    @Override
    public Response deleteRecords(ArrayList persistentObjects) throws Exception {
        VOListResponse listResponse = new VOListResponse();
        for (Object object : persistentObjects) {
            listaTrabalhadores.remove((Trabalhador) object);

            Trabalhador trabalhador = (Trabalhador) object;
            if (trabalhador.getId() != null) {
                controller.destroy(trabalhador.getId());
            }

        }
        listResponse.setRows(listaTrabalhadores);
        return listResponse;
    }

    @Override
    public Response updateRecords(int[] rowNumbers, ArrayList oldPersistentObjects, ArrayList persistentObjects) throws Exception {
        VOListResponse listResponse = new VOListResponse();
//
//        for (Object object : persistentObjects) {
//            listaTrabalhadores.add((Trabalhador) object);
//
//            Trabalhador trabalhador = (Trabalhador) object;
//            if (trabalhador.getId() != null) {
//                controller.destroy(trabalhador.getId());
//            }
//
//        }

        listResponse.setRows(listaTrabalhadores);
        return listResponse;
    }

    public List<Trabalhador> getListaTrabalhadores() {
        return listaTrabalhadores;
    }

    public void setListaTrabalhadores(List<Trabalhador> listaTrabalhadores) {
        this.listaTrabalhadores = listaTrabalhadores;
    }
}
